<?php

namespace App\Listener;

use Hyperf\Database\Model\Relations\Relation;
use Hyperf\Event\Annotation\Listener;
use Hyperf\Event\Contract\ListenerInterface;
use Hyperf\Framework\Event\BootApplication;

#[Listener]
class MorphMapRelationListener implements ListenerInterface
{
    public function listen(): array
    {
        return [
            BootApplication::class,
        ];
    }

    public function process(object $event): void
    {
        //自定义多态映射--默认情况下，框架要求 type 必须存储对应模型类名，比如上述 imageable_type 必须是对应的 User::class 和 Book::class，但显然在实际应用中，这是十分不方便的。所以我们可以自定义映射关系，来解耦数据库与应用内部结构
        Relation::morphMap([
//            'user' => Model\User::class,
//            'book' => Model\Book::class,
        ]);
    }
}